package com.lyf.language.learn.atsgg.io;

import java.io.File;
import java.io.IOException;
import java.util.Objects;
import java.util.Random;
import java.util.UUID;

/**
 * @AUTHOR LYF
 * @DATE 2022/6/1
 * @VERSION 1.0
 * @DESC
 */
public class FileLearnDemo {
    public static void main(String[] args) {
        practice2();
        System.out.println(total);
    }
    /**
     * File类的基础创建和路径的理解（以及URI的理解）
     * 通过构造器创建File对象--占有一个内存分区，端---但文件File的端内的内容还不能修改
     * 需要IO去操作。
     * API:
     * 1.基本查询功能
     * 2.判断功能
     * 3.删除重命名功能
     * 4.创建功能（createNewFile,mkdir和mkdirs
     */
    static void createFile(File file){
        if(!file.exists()){
            try {
                boolean flag = file.createNewFile();
                if(flag){
                    System.out.println("创建成功!");
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
    static void test1()  {
        // 相对的是module
        File file = new File("/test.txt");
        createFile(file);
        //获取基础的信息
        System.out.println(file.getAbsolutePath());//E:\test.txt
        System.out.println(file.lastModified());
        // 相对的是module: E:\JavaProjects\LearnProjects\learn-practice\test2.txt
        File file1 = new File("test2.txt");
        createFile(file1);
        //绝对路径全部--
        System.out.println(file1.getAbsolutePath());
        //该文件\夹名
        System.out.println(file1.getPath());

        File file2 = new File("test3.jpg");
        createFile(file2);

        String path ="E:\\JavaProjects\\LearnProjects\\learn-practice\\java-base\\src\\main\\java\\com\\lyf\\language\\learn\\atsgg\\io\\test.jpg";
        File file3 = new File(path);
        //相当于也移动了该文件
        file2.renameTo(file3);
        String path2 = "E:\\JavaProjects\\LearnProjects\\learn-practice\\java-base\\src\\main\\java\\com\\lyf\\language\\learn\\atsgg\\oop";
        File file4 = new File(path2);
        String path3 = "E:\\JavaProjects\\LearnProjects\\learn-practice\\java-base\\src\\main\\java\\com\\lyf\\language\\learn\\atsgg\\io\\oop";
        file4.renameTo(new File(path3));
    }
    static void practice(){
        String rootPath = "E:\\JavaProjects\\LearnProjects\\learn-practice\\java-base\\src\\main\\java\\com\\lyf\\language\\learn\\atsgg\\io\\files";
        String[] files = {"images","html","css","config"};
        String[] prefix = {"jpg","png","csv","sql","xml"};
        // 1.创建文件
        for(String str:files){
            //
            String dirPath = rootPath+"\\"+str;
            File file = new File(dirPath);

            if(!file.exists()){
                boolean flag = file.mkdirs();
                if(flag){
                    System.out.println("创建"+file.getName()+"成功!!");
                }
            }

            for(int i=0;i<3;i++){
                /// 随机生成一些文件
                String filePath = dirPath+"\\" +UUID.randomUUID().toString().substring(0,4) +"."+prefix[new Random().nextInt(4)];
                File file1 = new File(filePath);
                try {
                    file1.createNewFile();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }

        // 2.判断、遍历（递归寻找--）
    }
    static void practice2(){
           String path = "E:\\JavaProjects\\LearnProjects\\learn-practice\\java-base\\src\\main\\java\\com\\lyf\\language\\learn\\atsgg\\io\\files";
           File file = new File(path);
           query(file,"img");
    }
    static int total = 0;
    static void query(File file,String target){
          if(file.listFiles()==null)
              return;
          for(File file1:file.listFiles()){
              // 措施操作
              // file1.get..
              if(file1.isFile()){
                  //
                  String filePath = file1.getPath();
                  String fileName = file1.getName();
                  // 越界问题需要考虑--
                  System.out.println(filePath+":::"+fileName+":::"+fileName.split("\\.")[1]);
                  if(fileName.split("\\.")[1].equals("jpg"))
                      total++;
              }
              query(file1,target);// 递归
          }


    }

}
